package com.hancher.common.javautil;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

/**
 * 作者 : Hancher ytu_shaoweijie@163.com <br/>
 * 时间 : 2023/3/9 0009 23:37 <br/>
 * 描述 : Hash工具类
 */
public class Sha256Util {

    /**
     * SHA-256 加密
     *
     * @param str 加密前
     * @return 加密后
     */
    public static String getSHA256Str(String str) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
            byte[] hash = messageDigest.digest(str.getBytes(StandardCharsets.UTF_8));
            return ByteStrUtil.byte2Str(hash);
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * HmacSHA256 加密
     *
     * @param salt 盐
     * @param str  加密前
     * @return 加密后
     */
    public static String hmacSHA256(String str, String salt) {
        try {
            Mac hmacSha256 = Mac.getInstance("HmacSHA256");
            hmacSha256.init(new SecretKeySpec(salt.getBytes(StandardCharsets.UTF_8), 0, salt.length(), "HmacSHA256"));
            byte[] hmacSha256Bytes = hmacSha256.doFinal(str.getBytes(StandardCharsets.UTF_8));
            return ByteStrUtil.byte2Str(hmacSha256Bytes);
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }


}
